package leetcode_acm.array;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;

/**
 * 功能描述
 *
 * @author: 张庭杰
 * @date: 2023年03月21日 20:12
 */
public class Intersection {
    public int[] intersection(int[] nums1, int[] nums2) {
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        int p1 = 0,p2 = 0;
        int n = nums1.length,m = nums2.length;
        List<Integer> list = new LinkedList<>();
        while(p1 < n && p2 < m){
            if(nums1[p1] == nums2[p2]){
                list.add(nums1[p1]);
                int leftVal = nums1[p1++];
                while(p1 < nums1.length && nums1[p1] == leftVal){
                    p1++;
                }
                int rightVal = nums2[p2++];
                while (p2 < nums2.length && nums2[p2] == rightVal){
                    p2++;
                }
            }else if(nums1[p1] > nums2[p2]){
                p2++;
            }else if(nums1[p1] < nums2[p2]){
                p1++;
            }
        }
        int length = list.size();
        int[] ans = new int[length];
        for(int i = 0;i < length;i++){
            ans[i] = list.get(i);
        }
        return ans;
    }
}
